<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script>
    /*
    * 正则表达式的方法：一般默认匹配第一个满足条件的字符
    *
    * 补充知识：正则表达式是一个有状态的对象，匹配结果会记录位置
    *
    *   方法二 .exec 匹配结果 将结果的详细信息返回出来，(可以迭代)
    *   .exec的返回值：
    *       匹配到了就返回一个数组(具体信息查看代码运行)，数组中描述匹配到的相关信息
    *       匹配不到就返回null
    *
    * 补充知识：正则表达式由两部分组成
    *   第一部分：正则表达式的描述
    *       /描述/
    *
    *   第二部分：正则表达式的匹配模式 (匹配模式就是需要去注意的点：是否区分大小写(i)，是否换行(m)，是否全局匹配(g))
    *       /描述/匹配模式
    *       例如 /a/i //表示匹配a字符串，不区分大小写
    *
    * 补充知识：
    *   任意一个字符 用 . 表示
    *   例如 /./ 就是表示匹配任意一个字符(包括空格但是不包括换行)
    *   如果要匹配点这个字符 用反斜杠/\./
    *
    *
    * */
    let reg = /[^abc]/ //匹配非a非b非c的任意一个字符 没加匹配模式默认匹配符合条件的第一个字符
    let str = "adcbe"
    console.log(reg.exec(str)) //返回[0:"d", index: 1, input: "adcbe", groups: undefined]

    let reg1 = /[^abc]/m //匹配非a非b非c的任意一个字符 全局匹配
    let str1 = "adcbe"
    console.log(reg1.exec(str1)) //第一次匹配到了d，记录位置
    //[0:"d", index: 1, input: "adcbe", groups: undefined]

    console.log(reg1.exec(str1)) //第二次从上次d之后的位置开始匹配，匹配到了e，记录位置
    //[0:"d", index: 1, input: "adcbe", groups: undefined]

    console.log(reg1.exec(str1)) //第三次从e之后的位置开始匹配，匹配不到返回null，状态归零
    //[0:"d", index: 1, input: "adcbe", groups: undefined]

    console.log(reg1.exec(str1)) //第四次匹配又从头开始
    //[0:"d", index: 1, input: "adcbe", groups: undefined]



    //后台返回一个验证码date，"abcd"，要做忽略大小写的验证
    let date = "abcd"
    let reg2 = new RegExp(date,"i") //传入两个参数 一个是接收到的匹配描述 一个是匹配模式
    console.log(reg2.exec("AbCd")) //返回[0:"AbCd", index: 0, input: "AbCd", groups: undefined]


    let reg3 = /[^abc]/g //全局匹配非abc的字符
    let str3 = "fnvidbgiuwawbcvvkhisvcbatfcbcswnnaedsbomypn"

    while(result = reg3.exec(str3)){ //前面圆括号里有两句代码要执行 1是exec的匹配结果 2是将匹配结果赋存储到result
        console.log(result[0]) //有匹配结果的话 返回的一定是数组 每次就将result中的0打印出来 而且正则会自动记录位置 下次循环从这个位置之后开始
    }


</script>
</body>
</html>